package com.example.common.config;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.Objects;

/**
 * @Author Peng Yisheng
 * @Date 2024/11/23 18:12
 * @Description 服务实例：一个服务定义会对应多个服务实例
 */
@Getter
@Setter
public class ServiceInstance implements Serializable {
    private static final long serialVersionUID = -7559569289189228478L;

    protected String serviceInstanceId;  // 服务实例ID: ip:port

    protected String uniqueId;  // 服务定义唯一id： uniqueId

    protected String ip;  // 服务实例地址： ip:port

    protected int port;

    protected String tags;  // 标签信息

    protected Integer weight;  // 权重信息

    protected long registerTime;  // 服务注册的时间戳：后面做负载均衡，warmup预热

    protected boolean enable = true;  // 服务实例启用禁用

    protected String version;  // 服务实例对应的版本号

    private boolean gray;  // 是否灰度

    public ServiceInstance() {

    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (this == null || getClass() != o.getClass()) {
            return false;
        }
        ServiceInstance serviceInstance = (ServiceInstance) o;
        return Objects.equals(serviceInstanceId, serviceInstance.serviceInstanceId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(serviceInstanceId);
    }
}
